
在軟體開發中使用版本控制及自動部署,除了可以方便團隊協作外、也能減去手動部署的繁瑣步驟和時間。
因此這篇文章會使用 @kintone/customize-uploader 以及 Github Actions 來達成 git push 後自動部署至 Kintone 的功能,接下來的範例會以 Vite 作為示範。
也可以使用上一篇我們一起製作的開發環境來製作。
根據官網的教學,在終端機輸入下列指令後建立專案:
$ npm create vite@latest
之後會需要選擇要使用的 Framework、是否需要 TypeScript 等,這部分依照個人需求設定。我選擇的是 Vue + Typescript。

完成之後用編輯器開啟專案,我這邊使用 Visual Studio Code。

根據 kintone-customize-uploader 的 Github 上說明,我們會需要一個 manifest.json 的檔案,裡面記載 app id、上傳的檔案路徑等資訊:
// manifest.json 範例
{
  "app": "1",
  "scope": "ALL",
  "desktop": {
    "js": [
      "https://js.cybozu.com/jquery/3.3.1/jquery.min.js",
      "sample/customize.js"
    ],
    "css": ["sample/51-modern-default.css"]
  },
  "mobile": {
    "js": ["https://js.cybozu.com/jquery/3.3.1/jquery.min.js"]
  }
}
接著只要知道 build 出來的檔案在哪裡就可以,所以回到 vite.config.ts 這隻檔案內稍微修改下:
// vite.config.ts
export default defineConfig({
  plugins: [vue()],
  build: {
    target: 'es2021',
    rollupOptions: {
      input: {
        desktop: 'src/main.ts'
      },
      output: {
        format: 'iife',
        entryFileNames: 'app.js'
      }
    }
  }
})
之後如果下指令 npm run build 就會看到編譯後的 app.js 出現在 dist 資料夾,到這裡我們就在根目錄建立 manifest.json,並且修改一下路徑:
{
  "app": "42",
  "scope": "ALL",
  "desktop": {
    "js": ["dist/app.js"],
    "css": []
  },
  "mobile": {
    "js": [],
    "css": []
  }
}
記得要修改 app 的 id
為了讓等等部署完後確認畫面上有沒有順利掛載 Vue,稍微改一下 main.ts:
// main.ts
import { createApp } from 'vue'
import App from './App.vue'
kintone.events.on('app.record.index.show', (event: KintoneEvent) => {
  const element = kintone.app.getHeaderMenuSpaceElement()!
  createApp(App).mount(element)
  return event
})
順便 npm 安裝 @kintone/dts-gen 並在 tsconfig 增加以下,避免報錯:
  },
  "files": ["./node_modules/@kintone/dts-gen/kintone.d.ts"], // [!code ++]
  "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"],
  "references": [{ "path": "./tsconfig.node.json" }]
}
接著將專案推到 Github 上後,進去這個 repo 後點選上方的選單的 Settings、點選左邊選單的 Secrets and variables > Actions > 綠色按鈕的 New repository secret。

接著輸入 KINTONE_BASE_URL、KINTONE_USERNAME、KINTONE_PASSWORD 三個變數。

完成後點選上方選單的 Actions,點擊 set up a workflow yourself,並貼上下面的程式碼:
也可以選擇直接將此檔案寫到開發資料夾的
.github/workflows/main.yml
name: Deploy to Kintone
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: 20
      - name: Install Kintone uploader
        run: npm install -g @kintone/customize-uploader
      - name: Build files
        run: npm install && npm run build
    
      - name: Execute Kintone Deployment
        run: |
          kintone-customize-uploader --base-url ${{ secrets.KINTONE_BASE_URL }} --username ${{ secrets.KINTONE_USERNAME }} --password ${{ secrets.KINTONE_PASSWORD }} manifest.json
接著按下右上角的 Commit Changes... 後,回到 Actions 就可以看到部署的狀況了。

成功部署的話會出現綠色勾勾,這時候如果回到 Kintone 裡面看的話,就可以看到剛剛開發的內容了。記得 CSS 要改一下,不然會跑版。

這邊我也提供了範例,是使用 Vite + Vitest 單元測試 + Github Action:點此連結
在 All workflows 可以看到每個 workflow 右邊所花費的時間,如果帳號是 GitHub Free 的話,每月只能使用 2,000 分鐘,不過部署一次不需要花太多時間,沒要幹嘛的話 2,000 分鐘應該綽綽有餘。